﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MvcCaja.Core.Interfaces;
using MvcCaja.Dal.Models;

namespace MvcCaja.Core
{
    public class CajaService : ICajaService
    {
        public List<Caja> ObtenerTodos()
        {
            ModelDataContext db = new ModelDataContext();

            return (from n in db.Caja
                    select n).ToList<Caja>();
        }


        public List<MovimientoCaja> ListarMovimientos()
        {
            ModelDataContext db = new ModelDataContext();


            return (from n in db.MovimientoCaja
                    select n).ToList<MovimientoCaja>();
        }

        public List<MovimientoCaja> ListarMovimientos(string fecIni, string fecFin, string caja, string empleado)
        {
            ModelDataContext db = new ModelDataContext();

            DateTime _FecIni = Convert.ToDateTime(fecIni);
            DateTime _FecFin = Convert.ToDateTime(fecFin);

            var _movimientos = from mov in db.MovimientoCaja
                               where mov.FechaHoraMovimiento >= _FecIni && mov.FechaHoraMovimiento <= _FecFin
                               select mov;

            return (_movimientos).ToList<MovimientoCaja>();
        }

        public List<MovimientoCaja> MovimientoCajaConsumo(string vCodigoOrden, DateTime vFechaMovimiento)
        {
            ModelDataContext db = new ModelDataContext();

            var movcaja = (from n in db.MovimientoCaja
                        where n.IdOrden.Equals(vCodigoOrden) && n.FechaHoraMovimiento.Equals(vFechaMovimiento)
                        select n);

            return movcaja.ToList<MovimientoCaja>();
        }

        public MovimientoCaja ObtenerMovimientoCaja(string vCodigoOrden, DateTime vFechaMovimiento)
        {
            ModelDataContext db = new ModelDataContext();

            var movcaja =   (from n in db.MovimientoCaja
                            where n.IdOrden.Equals(vCodigoOrden) & 
                            n.FechaHoraMovimiento.Equals(vFechaMovimiento)
                            select n).Distinct();

            return movcaja.First<MovimientoCaja>();
        }

        public List<MovimientoCaja> ListarMovimientosPorPago(string codigoOrden)
        {
            ModelDataContext db = new ModelDataContext();

            return (from n in db.MovimientoCaja
                    orderby n.IdOrden ascending
                    where n.IdOrden.Equals(codigoOrden)
                    select n).ToList<MovimientoCaja>();
        }

        public int validarUsuario(string usuario, string pass) { 
            ModelDataContext db = new ModelDataContext();


            return (from n in db.Administradors
                    where n.IdAdministrador.Equals(usuario) & n.PassAcceso.Equals(pass)
                        select n).Count();

        }



    }
}
